lexer grammar AnalexXML;

options {
  k = 4;
  language = Java;
}

tokens {
  
}

@lexer::header {
  package Practica4.EBNF;
}

@lexer::members {
  private ArrayList<String> errors = new ArrayList<String>();
    public void displayRecognitionError(String[] tokenNames,
                                        RecognitionException e) {
        String hdr = getErrorHeader(e);
        String msg = getErrorMessage(e, tokenNames);
        errors.add(hdr + " " + msg);
    }
    
    public ArrayList<String> getErrors() {
        return errors;
    }
}

fragment DIGITO: '0'..'9';  
fragment LETRA: 'A'..'Z' | 'a'..'z' | '_' | '/' | '&' | ';' | '.';
SALTO_LINEA: ('\r' '\n' | '\r' | '\n') {$channel=HIDDEN;skip();};

BLANCO: (' ' | '\t' | SALTO_LINEA) {skip();};
STRING: LETRA (' ' | SALTO_LINEA | LETRA)*;
COMENTARIO: '<!--' (~'-' | '-'~'-' | '--'~'>')* '-->' {skip();};
ID: '<' (LETRA)+ '>';

